Un control ListBox tiene implementadas las funciones [SelectAll], y [UnselectAll] para seleccionar todos los elementos o bien para quitar la selección de todos ellos
El problema surge cuando quiero implementar el proceso [InvertirSeleccion], porque tendré que hacerlo con código
El código es el siguiente:
#Region "Botón InvertirSeleccion"
Friend Sub ExecuteInvertirSeleccion()
' Esta colección contendrá los nuevos elementos seccionados
Dim nuevaSeleccion As New List(Of LayerModelo.ItemUnaImagen)
' Recorro el ListBox
For Each elementoListBox As LayerModelo.ItemUnaImagen In MyListBoxFotos.Items
If MyListBoxFotos.SelectedItems.Contains(elementoListBox) Then
' ya esta seleccionado, no hacer nada
Else
'No esta seleccionado. como estoy invirtiendo la selección,
'lo incluyo en la NUEVA lista de elementos seleccionados
nuevaSeleccion.Add(elementoListBox)
End If
Next
' Borro TODOS los elementos actualmente seleccionados
MyListBoxFotos.SelectedItems.Clear()
' Incluyo los NUEVOS elementos seleccionados
' en la lista de elementos seleccionados del listBox
For Each elementoSeleccionado As LayerModelo.ItemUnaImagen In nuevaSeleccion
MyListBoxFotos.SelectedItems.Add(elementoSeleccionado)
Next
End Sub
#End Region